home *** CD-ROM | disk | FTP | other *** search
- -- Copyright (c) 1990 Regents of the University of California.
- -- All rights reserved.
- --
- -- This software was developed by John Self of the Arcadia project
- -- at the University of California, Irvine.
- --
- -- Redistribution and use in source and binary forms are permitted
- -- provided that the above copyright notice and this paragraph are
- -- duplicated in all such forms and that any documentation,
- -- advertising materials, and other materials related to such
- -- distribution and use acknowledge that the software was developed
- -- by the University of California, Irvine. The name of the
- -- University may not be used to endorse or promote products derived
- -- from this software without specific prior written permission.
- -- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- -- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- -- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
- -- TITLE miscellaneous definitions
- -- AUTHOR: John Self (UCI)
- -- DESCRIPTION contains all global variables used in aflex.
- -- also some subprograms which are commonly used.
- -- NOTES The real purpose of this file is to contain all miscellaneous
- -- items (functions, MACROS, variables definitions) which were at the
- -- top level of flex.
- -- $Header: /co/ua/self/arcadia/aflex/ada/src/RCS/misc_defsB.a,v 1.5 90/01/12 15:20:21 self Exp Locker: self $
-
- package body MISC_DEFS is
-
- -- returns true if an nfa state has an epsilon out-transition slot
- -- that can be used. This definition is currently not used.
-
- function FREE_EPSILON(STATE : in INTEGER) return BOOLEAN is
- begin
- return ((TRANSCHAR(STATE) = SYM_EPSILON) and (TRANS2(STATE) = NO_TRANSITION)
- and (FINALST(STATE) /= STATE));
- end FREE_EPSILON;
-
- -- returns true if an nfa state has an epsilon out-transition character
- -- and both slots are free
-
- function SUPER_FREE_EPSILON(STATE : in INTEGER) return BOOLEAN is
- begin
- return ((TRANSCHAR(STATE) = SYM_EPSILON) and (TRANS1(STATE) = NO_TRANSITION)
- );
- end SUPER_FREE_EPSILON;
-
- function ALLOCATE_INTEGER_ARRAY(SIZE : in INTEGER) return INT_PTR is
- begin
- return new UNBOUNDED_INT_ARRAY(0 .. SIZE);
- end ALLOCATE_INTEGER_ARRAY;
-
- procedure REALLOCATE_INTEGER_ARRAY(ARR : in out INT_PTR;
- SIZE : in INTEGER) is
- NEW_ARR : INT_PTR;
- begin
- NEW_ARR := ALLOCATE_INTEGER_ARRAY(SIZE);
- NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST);
- ARR := NEW_ARR;
- end REALLOCATE_INTEGER_ARRAY;
-
- procedure REALLOCATE_STATE_ENUM_ARRAY(ARR : in out STATE_ENUM_PTR;
- SIZE : in INTEGER) is
- NEW_ARR : STATE_ENUM_PTR;
- begin
- NEW_ARR := ALLOCATE_STATE_ENUM_ARRAY(SIZE);
- NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST);
- ARR := NEW_ARR;
- end REALLOCATE_STATE_ENUM_ARRAY;
-
- procedure REALLOCATE_RULE_ENUM_ARRAY(ARR : in out RULE_ENUM_PTR;
- SIZE : in INTEGER) is
- NEW_ARR : RULE_ENUM_PTR;
- begin
- NEW_ARR := ALLOCATE_RULE_ENUM_ARRAY(SIZE);
- NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST);
- ARR := NEW_ARR;
- end REALLOCATE_RULE_ENUM_ARRAY;
-
- function ALLOCATE_INT_PTR_ARRAY(SIZE : in INTEGER) return INT_STAR_PTR is
- begin
- return new UNBOUNDED_INT_STAR_ARRAY(0 .. SIZE);
- end ALLOCATE_INT_PTR_ARRAY;
-
- function ALLOCATE_RULE_ENUM_ARRAY(SIZE : in INTEGER) return RULE_ENUM_PTR is
- begin
- return new UNBOUNDED_RULE_ENUM_ARRAY(0 .. SIZE);
- end ALLOCATE_RULE_ENUM_ARRAY;
-
- function ALLOCATE_STATE_ENUM_ARRAY(SIZE : in INTEGER) return STATE_ENUM_PTR
- is
- begin
- return new UNBOUNDED_STATE_ENUM_ARRAY(0 .. SIZE);
- end ALLOCATE_STATE_ENUM_ARRAY;
-
- function ALLOCATE_BOOLEAN_ARRAY(SIZE : in INTEGER) return BOOLEAN_PTR is
- begin
- return new BOOLEAN_ARRAY(0 .. SIZE);
- end ALLOCATE_BOOLEAN_ARRAY;
-
- function ALLOCATE_VSTRING_ARRAY(SIZE : in INTEGER) return VSTRING_PTR is
- begin
- return new UNBOUNDED_VSTRING_ARRAY(0 .. SIZE);
- end ALLOCATE_VSTRING_ARRAY;
-
- function ALLOCATE_DFAACC_UNION(SIZE : in INTEGER) return DFAACC_PTR is
- begin
- return new UNBOUNDED_DFAACC_ARRAY(0 .. SIZE);
- end ALLOCATE_DFAACC_UNION;
-
- procedure REALLOCATE_INT_PTR_ARRAY(ARR : in out INT_STAR_PTR;
- SIZE : in INTEGER) is
- NEW_ARR : INT_STAR_PTR;
- begin
- NEW_ARR := ALLOCATE_INT_PTR_ARRAY(SIZE);
- NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST);
- ARR := NEW_ARR;
- end REALLOCATE_INT_PTR_ARRAY;
-
- procedure REALLOCATE_CHARACTER_ARRAY(ARR : in out CHAR_PTR;
- SIZE : in INTEGER) is
- NEW_ARR : CHAR_PTR;
- begin
- NEW_ARR := ALLOCATE_CHARACTER_ARRAY(SIZE);
- NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST);
- ARR := NEW_ARR;
- end REALLOCATE_CHARACTER_ARRAY;
-
- procedure REALLOCATE_VSTRING_ARRAY(ARR : in out VSTRING_PTR;
- SIZE : in INTEGER) is
- NEW_ARR : VSTRING_PTR;
- begin
- NEW_ARR := ALLOCATE_VSTRING_ARRAY(SIZE);
- NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST);
- ARR := NEW_ARR;
- end REALLOCATE_VSTRING_ARRAY;
-
- function ALLOCATE_CHARACTER_ARRAY(SIZE : in INTEGER) return CHAR_PTR is
- begin
- return new CHAR_ARRAY(0 .. SIZE);
- end ALLOCATE_CHARACTER_ARRAY;
-
- procedure REALLOCATE_DFAACC_UNION(ARR : in out DFAACC_PTR;
- SIZE : in INTEGER) is
- NEW_ARR : DFAACC_PTR;
- begin
- NEW_ARR := ALLOCATE_DFAACC_UNION(SIZE);
- NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST);
- ARR := NEW_ARR;
- end REALLOCATE_DFAACC_UNION;
-
- procedure REALLOCATE_BOOLEAN_ARRAY(ARR : in out BOOLEAN_PTR;
- SIZE : in INTEGER) is
- NEW_ARR : BOOLEAN_PTR;
- begin
- NEW_ARR := ALLOCATE_BOOLEAN_ARRAY(SIZE);
- NEW_ARR(0 .. ARR'LAST) := ARR(0 .. ARR'LAST);
- ARR := NEW_ARR;
- end REALLOCATE_BOOLEAN_ARRAY;
-
- function MAX(X, Y : in INTEGER) return INTEGER is
- begin
- if (X > Y) then
- return X;
- else
- return Y;
- end if;
- end MAX;
-
- function MIN(X, Y : in INTEGER) return INTEGER is
- begin
- if (X < Y) then
- return X;
- else
- return Y;
- end if;
- end MIN;
-
- end MISC_DEFS;
-